home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / Modules / while.em < prev    next >
Lisp/Scheme  |  1993-07-13  |  695b  |  29 lines

  1. (defmodule while
  2.   (eulisp0) ()
  3.  
  4.   (defun map-while (ff pf) 
  5.     (if (pf) (progn (ff) (map-while ff pf)) nil))
  6.  
  7.   (defmacro while (pred . forms)
  8.     `(map-while (lambda () (progn ,@forms)) (lambda () ,pred)))
  9.   
  10.   (defmacro ++ (form . vals)
  11.     (cond ((atom form)
  12.        `(setq ,form (+ ,form 1)))
  13.       ((eq (car form) 'dynamic)
  14.        `(dynamic-setq ,(cadr form) (+ ,form 1)))
  15.       (t
  16.        `((setter ,(car form)) ,(cadr form) (+ ,form 1)))))         
  17.  
  18.   (defmacro -- (form)
  19.     (cond ((atom form)
  20.        `(setq ,form (- ,form 1)))
  21.       ((eq (car form) 'dynamic)
  22.        `(dynamic-setq ,(cadr form) (- ,form 1)))
  23.       (t
  24.        `((setter ,(car form)) ,(cadr form) (- ,form 1)))))         
  25.  
  26.   (export map-while while ++ --)
  27.  
  28. )
  29.